export default {
  xianzhiNumber: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[0-9]{1,10}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '请输入10位数以内的容量'))
    }
    callback()
  },
  // 验证身份证号码
  IsIdNumber(rule, value, callback) {
    const reg = /^([1-9]\d{5}(18|19|20)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}(\d|X|x))$/
    if (!reg.test(value)) {
      callback(new Error('请输入合法的中国大陆身份证号'))
    } else {
      callback()
    }
  },
  // 验证门类代码
  IsCategoryCode(rule, value, callback) {
    const reg = /^[a-zA-Z0-9#^&*()_+·~-]{2,10}$/
    if (!reg.test(value)) {
      callback(new Error('请输入2-10位大小写、数字和特殊字符组合的字符'))
    } else {
      callback()
    }
  },
  // 门禁工号
  ISjobNo(rule, value, callback) {
    const reg = /^[0-9]{1,8}$/
    if (!reg.test(value)) {
      callback(new Error('请输入1-8位数字的字符'))
    } else {
      callback()
    }
  },
  // 16进制的校验规则
  Is16Hex(rule, value, callback) {
    const reg = /^[A-Fa-f0-9]{1,12}$/
    if (value) {
      if (!reg.test(value)) {
        callback(new Error('请输入1-12位的16进制的UID'))
      } else {
        callback()
      }
    }
    callback()
  },
  // 不能输入汉字
  checkData(rule, value, callback) {
    if (value) {
      if (/[\u4E00-\u9FA5]/g.test(value)) {
        callback(new Error('不能输入汉字!'))
      } else {
        callback()
      }
    }
    callback()
  },

  // 件号的验证规则
  IsPieceNo: (rule, value, callback) => {
    const reg = /^[a-zA-Z0-9]{1,6}$/
    if (!reg.test(value)) {
      callback(new Error('请输入1-6位大小写或者数字的组合'))
    } else {
      callback()
    }
  },
  // 文号的验证规则
  isDocNo: (rule, value, callback) => {
    const DocNo = /['<>&*@#￥%！]+$/
    if (!value) {
      return callback()
    }
    setTimeout(() => {
      if (DocNo.test(value)) {
        callback(new Error('输入格式不合法！'))
      } else {
        return callback()
      }
    })
  },
  //  请输入正确的全宗编号
  isFondsCode: (rule, value, callback) => {
    const reg = /^[0-9+-|"]{2,20}$/
    if (!reg.test(value)) {
      callback(new Error('请输入正确的全宗编号'))
    } else {
      callback()
    }
  },
  // 特殊符号验证
  SpecialCharacters: (rule, value, callback) => {
    let reg = /^[a-zA-Z0-9_-]{1,40}$/
    if (!reg.test(value)) {
      callback(new Error('请输入1-40位数字、字母或字符！'))
    } else {
      callback()
    }
  },

  // 手机号验证
  validateMobile: (rule, value, callback) => {
    var reg = /^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
    if (!reg.test(value)) {
      callback(new Error('请输入合法的手机号'))
    } else {
      callback()
    }
  },
  // 密码验证
  checkPassword: (rule, value, ck) => {
    // 不包含特殊字符
    // var password = /^[a-zA-Z0-9@$!%*?&]{2,18}$/
    var password = /^.{3,18}$/
    if (password.test(value)) {
      ck()
    } else {
      return ck(new Error('请输入长度在3-18位的密码'))
    }
  },
  // 门禁密码验证
  checkDoorPassword: (rule, value, ck) => {
    // 不包含特殊字符
    var password = /^[a-zA-Z0-9_.-]{2,18}$/
    if (password.test(value)) {
      ck()
    } else {
      return ck(new Error('请输入2-18位大小写、数字.-组合的密码'))
    }
  },
  // 登录用户
  checkUserName: (rule, value, ck) => {
    // 不包含特殊字符
    var userNmae = /^(?=.*[a-zA-Z0-9])[a-zA-Z0-9_-]{3,14}$/
    if (value === '' || value === null) {
      ck()
      return
    }
    if (userNmae.test(value)) {
      ck()
    } else {
      return ck(new Error('登录账号格式为3-14位数字、字母或_-的组合'))
    }
  },
  /*ip正则验证*/
  validcodeip: (rule, value, callback) => {
    const reg =
      /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
    if (!value) {
      return callback()
    }
    setTimeout(() => {
      if (reg.test(value)) {
        callback()
      } else {
        return callback(new Error('输入格式不合法！'))
      }
    })
  },
  zzs: (rule, value, callback) => {
    var zz2 = new RegExp('^[0-9]*[1-9][0-9]*$')
    if (zz2.test(value)) {
      callback()
    } else {
      return callback(new Error('只能输入正整数'))
    }
  },
  phone: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^(\\+86)?0?[1][34578][0-9]{9}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '请输入正确的电话号码'))
    }
    callback()
  },
  // 邮箱
  email: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,4}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '请输入正确的邮箱'))
    }
    callback()
  },
  postcode: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^\d{6}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '必须是6位数字'))
    }
    callback()
  },
  notValidInputText: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[^'/\\"()@$%^*<>&?]*$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '不能包含特殊字符^\'\\"()@$%^*<>&?*'))
    }
    callback()
  },

  letterOrNumber: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[0-9a-zA-Z]+$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '只能是数字和字母'))
    }
    callback()
  },
  // 设备编码
  EquipmentCode: (rule, value, callback) => {
    // 大小写数字下划线和中划线
    var reg = /^[a-zA-Z0-9_-]{3,16}$/
    if (!value) {
      return callback()
    }
    setTimeout(() => {
      if (reg.test(value)) {
        callback()
      } else {
        callback(new Error('请输入3至16位，大小写字母,数字和-_的组合形式'))
      }
    }, 100)
  },
  // 端口前缀
  portPrefix: (rule, value, callback) => {
    var reg = /^[0-9]{2}$/
    if (!value) {
      return callback()
    }
    setTimeout(() => {
      if (reg.test(value)) {
        callback()
      } else {
        callback(new Error('请输入两位数的端口前缀'))
      }
    }, 100)
  },
  letterOrNumberorUl: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^\w+$/.test(value)
    if (!pass) {
      callback(new Error(rule.message || '只能是数字和字母和_'))
    }
    callback()
  },
  id: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[0-9]{3,16}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '只能为 3-16 位数字'))
    }
    callback()
  },
  // 数字长度的的验证
  number: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[0-9]{1,5}$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '请输入5位以内的数字'))
    }
    callback()
  },
  positiveNumber: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[0-9]\d*$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '请输入数字'))
    }
    callback()
  },
  posiNactiveNumber: (rule, value, callback) => {
    if (value === '' || value === null) {
      callback()
      return
    }
    const pass = /^[+-]?\d+(\.\d+)?$/g.test(value)
    if (!pass) {
      callback(new Error(rule.message || '可输入正数负数和小数'))
    }
    callback()
  },
}
